home *** CD-ROM | disk | FTP | other *** search
Text File | 1994-06-11 | 20.4 KB | 1,071 lines |
- /**********************************************************************
- *
- * This file Copyright © 1993-1994 Dan Wesnor. Distribution
- * rights limited. See included "Distribution" file for
- * details.
- *
- * No part of this file be compiled or otherwise used in any product
- * (commercial or not) wihout the expressed written consent of the
- * copyright holder.
- *
- * The inclusion of this file in the distributed archive is intended
- * solely to aid authorized users in understanding the operation of
- * Magic Camera rendering system.
- *
- * For best reading set tab stops every 4 spaces.
- *
- **********************************************************************/
-
- %token <real> TYPE_REAL
- %token <integer> TYPE_INTEGER
- %token <id> TYPE_IDENT
- %token <filename> TYPE_FILENAME
- %token <cmd> OPEN_BRACE CLOSE_BRACE OPEN_PAREN CLOSE_PAREN OPEN_VEC CLOSE_VEC
- %token <text> TYPE_TEXT
-
- %type <real> type_posreal type_nnegreal real_int type_real01 real_expr real_term
- %type <integer> type_posint type_nnegint int_expr int_term
- %type <vector3> type_color type_vector type_point vec_expr vec_term
- %type <vector2> type_vector2
- %type <surface> type_surface
- %type <texture> type_texture
- %type <bitmap> type_bitmap
- %type <object> type_object
- %type <vertex> type_vertex
- %type <slice> type_slice
- %type <file> type_file
- %type <id> vertex_ident var_ident
- %type <instance> type_instance
- %type <integer> csg_operand
-
-
- %token <cmd> P_OBSERVER P_TARGET P_UP
- %token <cmd> P_DIFFUSE P_AMBIENT P_PREFL
- %token <cmd> P_PLANE P_LOC P_V1 P_V2
- %token <cmd> P_LAMP P_POINTAT P_SPREAD P_POWER
- %token <cmd> P_ASPECT P_HFOV P_VFOV
- %token <cmd> P_INCLUDE P_UNSURF P_MAXAADEPTH P_MAXOCTDEPTH
- %token <cmd> P_MAXOBCUBE P_SMOOTHOFF P_SMOOTHON P_ILLUMINATE
- %token <cmd> P_NOREFL P_NOSHAD P_NOTRANS P_DUMPSURFACES P_DUMPOBJECTS
- %token <cmd> P_DUMPLAMPS P_MAXAADIFF P_IFF P_RAW24LPO
- %token <cmd> P_SKY P_HORIZON P_ZENITH P_NUMSTARS P_STARCOLOR
- %token <cmd> P_FOG P_THIN P_DIST P_FILE P_RISE P_START P_END P_AXIS
- %token <cmd> P_CLOUDS P_SCALE P_PERTURB P_XPHASE P_YPHASE P_ZPHASE
- %token <cmd> P_WRAPSP P_BITMAP P_PATTERN P_SUB P_DOTRANS P_DOREFL P_DODIFF
- %token <cmd> P_XREP P_YREP P_FILTER P_WRAPCY P_HEIGHT P_MARBLE P_GRAIN
- %token <cmd> P_WOOD P_XSIZE P_YSIZE P_ZSIZE P_THICK P_NRINGS P_CHECK
- %token <cmd> P_PATTERN1 P_PATTERN2 P_BRICK P_MORTAR P_MSIZE P_YOFFSET
- %token <cmd> P_ZOFFSET P_REFLECT P_TRANSMIT P_INDEX P_PCOEF P_LUM
- %token <cmd> P_LPCOEF P_LPREFL P_AREFL P_ATRANS P_VERTEX P_FLUSHVERTS
- %token <cmd> P_QUAD P_TRIANGLE P_P1 P_P2 P_P3 P_SPHERE P_RADIUS P_RING
- %token <cmd> P_IN P_OUT P_TEXTURE P_ORIGIN P_OFFTREE P_COLOR P_DIRECT
- %token <cmd> P_NRAYS P_BLOTCH P_OBJECT P_ENDOBJECT P_INSTANCE P_SUBSURF
- %token <cmd> P_SUBTEXT P_LOCK P_KILLOBJECT P_XROTATE P_YROTATE P_ZROTATE
- %token <cmd> P_TRANSLATE P_RESET P_CHILD P_WAVES P_NCENTERS P_PHASE P_SIZE
- %token <cmd> P_BUMPSP P_BUMPCY P_HFIELD P_FLOOR P_SMOOTH P_SPIN P_SEGMENTS
- %token <cmd> P_POINT P_BOX P_V3 P_TUBE P_SLICE P_CLOSED P_EXTRUDE
- %token <cmd> P_LENGTH P_XAXIS P_YAXIS P_DIR P_FRONT P_BACK P_FILL P_BUMPFL
- %token <cmd> P_SKIN P_FILLFIRST P_FILLLAST P_BILLBOARD P_XLEN P_YLEN P_RES
- %token <cmd> P_WRAPFL P_REPEATX P_REPEATY P_NOTE P_CSG P_ANDNOT P_AND P_USESURF P_NAME
- %token <cmd> P_VARIABLE P_VREAL P_VINT P_EQSIGN P_PLUS P_MINUS P_MULT P_DIVIDE
- %token <cmd> P_COMMA OPEN_BRACK CLOSE_BRACK P_NEWSCOPE P_ENDSCOPE
- %token <cmd> P_ACOS P_ASIN P_ATAN P_COS P_SIN P_TAN P_COSH P_SINH P_TANH P_EXP
- %token <cmd> P_LOG P_LOG10 P_SQRT P_CEIL P_ATAN2 P_HOLE P_ARRAY P_PATH
- %token <cmd> P_DEG2RAD P_RAD2DEG P_PSPHERE P_HSEGS P_VSEGS P_VECTOR
- %token <cmd> P_OCTBUFF P_FASTMEMONLY
-
- %left P_PLUS P_MINUS
- %left P_MULT P_DIVIDE
- %left UMINUS
-
- %%
-
- lines: /* empty */
- | lines line
- ;
-
- line: '\n'
- | primitives
- | composites
- | objects
- | surfaces
- | textures
- | others
- ;
-
-
- /***************************************************
- *
- * Primitive Primitives
- *
- ***************************************************/
-
- primitives: plane
- | lamp
- | triangle
- | quad
- | sphere
- | ring
- | vertex
- | flushverts
- ;
-
- vertex: P_VERTEX vertex_ident type_point
- ;
-
- vertex_ident: TYPE_IDENT
- ;
-
- flushverts: P_FLUSHVERTS
- ;
-
- quad: P_QUAD OPEN_BRACE quad_defs CLOSE_BRACE
- ;
-
- quad_defs: /* empty */
- | quad_defs quad_def
- ;
-
- quad_def: P_LOC type_point
- | P_V1 type_vector
- | P_V2 type_vector
- | P_PATTERN type_surface
- | P_TEXTURE type_texture
- | P_ORIGIN type_point
- | P_OFFTREE
- ;
-
- triangle: P_TRIANGLE OPEN_BRACE triangle_defs CLOSE_BRACE
- ;
-
- triangle_defs: /* empty */
- | triangle_defs triangle_def
- ;
-
- triangle_def: P_V1 type_vector
- | P_V2 type_vector
- | P_P1 type_vertex
- | P_P2 type_vertex
- | P_P3 type_vertex
- | P_LOC type_point
- | P_PATTERN type_surface
- | P_TEXTURE type_texture
- | P_ORIGIN type_point
- | P_OFFTREE
- ;
-
- plane: P_PLANE OPEN_BRACE plane_defs CLOSE_BRACE
- ;
-
- plane_defs: /* nothing */
- | plane_defs plane_def
- ;
-
- plane_def: P_LOC type_point
- | P_V1 type_vector
- | P_V2 type_vector
- | P_PATTERN type_surface
- | P_TEXTURE type_texture
- | P_ORIGIN type_point
- ;
-
- sphere: P_SPHERE aOPEN_BRACE sphere_defs CLOSE_BRACE
- ;
-
- sphere_defs: /* empty */
- | sphere_defs sphere_def
- ;
-
- sphere_def: P_LOC type_point
- | P_RADIUS type_posreal
- | P_PATTERN type_surface
- | P_TEXTURE type_texture
- | P_ORIGIN type_point
- | P_OFFTREE
- ;
-
- ring: P_RING OPEN_BRACE ring_defs CLOSE_BRACE
- ;
-
- ring_defs: /* empty */
- | ring_defs ring_def
- ;
-
- ring_def: P_LOC type_point
- | P_V1 type_vector
- | P_V2 type_vector
- | P_IN type_nnegreal
- | P_OUT type_posreal
- | P_PATTERN type_surface
- | P_TEXTURE type_texture
- | P_ORIGIN type_point
- | P_OFFTREE
- ;
-
- lamp: P_LAMP OPEN_BRACE lamp_defs CLOSE_BRACE
- ;
-
- lamp_defs: /* nothing */
- | lamp_defs lamp_def
- ;
-
- lamp_def: P_LOC type_point
- | P_POINTAT type_point
- | P_COLOR type_color
- | P_DIRECT type_vector
- | P_SPREAD type_posreal
- | P_POWER type_posreal
- | P_RADIUS type_nnegreal
- | P_DIST type_nnegreal
- | P_NRAYS type_posint
- | P_NOSHAD
- ;
-
- /***************************************************
- *
- * Composite Definitions
- *
- ***************************************************/
-
- composites: hfield
- | spin
- | box
- | tube
- | billboard
- | slice
- | path
- | array
- | extrude
- | fill
- | skin
- | psphere
- ;
-
- psphere: P_PSPHERE OPEN_BRACE psphere_defs CLOSE_BRACE
- ;
-
- psphere_defs: /* empty */
- | psphere_defs psphere_def
- ;
-
- psphere_def: P_LOC type_point
- | P_RADIUS type_posreal
- | P_PATTERN type_surface
- | P_TEXTURE type_texture
- | P_ORIGIN type_point
- | P_OFFTREE
- | P_HSEGS type_posint
- | P_VSEGS type_posint
- | P_SMOOTH
- ;
-
- hfield: P_HFIELD OPEN_BRACE hfield_defs CLOSE_BRACE
- ;
-
- hfield_defs: /* empty */
- | hfield_defs hfield_def
- ;
-
- hfield_def: P_LOC type_point
- | P_V1 type_vector
- | P_V2 type_vector
- | P_UP type_vector
- | P_HEIGHT real_expr
- | P_FLOOR real_expr
- | P_SMOOTH
- | P_PATTERN type_surface
- | P_TEXTURE type_texture
- | P_ORIGIN type_point
- | P_FILE type_file
- ;
-
- spin: P_SPIN OPEN_BRACE spin_defs CLOSE_BRACE
- ;
-
- spin_defs: /* empty */
- | spin_defs spin_def
- ;
-
- spin_def: P_LOC type_point
- | P_SEGMENTS type_posint
- | P_SMOOTH
- | P_PATTERN type_surface
- | P_TEXTURE type_texture
- | P_SLICE type_slice
- | P_ORIGIN type_point
- | P_START real_expr
- | P_END real_expr
- | P_RISE real_expr
- | P_AXIS type_vector
- | P_FILLFIRST
- | P_FILLLAST
- ;
-
- box: P_BOX OPEN_BRACE box_defs CLOSE_BRACE
- ;
-
- box_defs: /* empty */
- | box_defs box_def
- ;
-
- box_def: P_LOC type_point
- | P_V1 type_vector
- | P_V2 type_vector
- | P_V3 type_vector
- | P_SMOOTH
- | P_PATTERN type_surface
- | P_TEXTURE type_texture
- | P_ORIGIN type_point
- ;
-
- tube: P_TUBE OPEN_BRACE tube_defs CLOSE_BRACE
- ;
-
- tube_defs: /* empty */
- | tube_defs tube_def
- ;
-
- tube_def: P_SEGMENTS type_posint
- | P_POINT type_point type_nnegreal
- | P_LOC type_point
- | P_SMOOTH
- | P_PATTERN type_surface
- | P_TEXTURE type_texture
- | P_ORIGIN type_point
- ;
-
- slice: P_SLICE TYPE_IDENT P_EQSIGN OPEN_BRACE slice_defs CLOSE_BRACE
- ;
-
- slice_defs: /* empty */
- | slice_first_def slice_next_defs
- ;
-
- slice_first_def: type_vector2
- ;
-
- slice_next_defs: /* empty */
- | slice_next_defs slice_next_def
- ;
-
- slice_next_def: P_COMMA type_vector2
- | P_CLOSED
- ;
-
- array: P_ARRAY TYPE_IDENT P_EQSIGN OPEN_BRACE array_defs CLOSE_BRACE
- ;
-
- array_defs: /* empty */
- | array_first_def array_next_defs
- ;
-
- array_first_def: real_expr
- ;
-
- array_next_defs: /* empty */
- | array_next_defs array_next_def
- ;
-
- array_next_def: P_COMMA real_expr
- | P_CLOSED
- ;
-
- path: P_PATH TYPE_IDENT P_EQSIGN OPEN_BRACE path_defs CLOSE_BRACE
- ;
-
- path_defs: /* empty */
- | path_first_def path_next_defs
- ;
-
- path_first_def: type_point
- ;
-
- path_next_defs: /* empty */
- | path_next_defs path_next_def
- ;
-
- path_next_def: P_COMMA type_point
- | P_CLOSED
- ;
-
- extrude: P_EXTRUDE OPEN_BRACE extrude_defs CLOSE_BRACE
- ;
-
- extrude_defs: /* empty */
- | extrude_defs extrude_def
- ;
-
- extrude_def: P_SLICE type_slice
- | P_LENGTH type_posreal
- | P_LOC type_point
- | P_XAXIS type_vector
- | P_YAXIS type_vector
- | P_DIRECT type_vector
- | P_FILLFIRST
- | P_FILLLAST
- | P_SMOOTH
- | P_PATTERN type_surface
- | P_TEXTURE type_texture
- | P_ORIGIN type_point
- ;
-
- fill: P_FILL OPEN_BRACE fill_defs CLOSE_BRACE
- ;
-
- fill_defs: /* empty */
- | fill_defs fill_def
- ;
-
- fill_def: P_SLICE type_slice
- | P_HOLE type_slice
- | P_LOC type_point
- | P_XAXIS type_vector
- | P_YAXIS type_vector
- | P_PATTERN type_surface
- | P_TEXTURE type_texture
- | P_ORIGIN type_point
- ;
-
- skin: P_SKIN OPEN_BRACE skin_defs CLOSE_BRACE
- ;
-
- skin_defs: /* empty */
- | skin_defs skin_def
- ;
-
- skin_def: P_SLICE type_slice type_point type_vector type_vector
-
- | P_FILLFIRST
- | P_FILLLAST
- | P_SMOOTH
- | P_PATTERN type_surface
- | P_TEXTURE type_texture
- | P_ORIGIN type_point
- ;
-
- billboard: P_BILLBOARD OPEN_BRACE billboard_defs CLOSE_BRACE
- ;
-
- billboard_defs: /* empty */
- | billboard_defs billboard_def
- ;
-
- billboard_def: P_BITMAP type_bitmap
- | P_PATTERN type_surface
- | P_SUB type_posint type_surface
- | P_DOTRANS
- | P_DODIFF
- | P_DOREFL
- | P_LOC type_point
- | P_XAXIS type_vector
- | P_YAXIS type_vector
- | P_XLEN type_posreal
- | P_YLEN type_posreal
- | P_XREP type_posreal
- | P_YREP type_posreal
- | P_FILTER type_posint
- ;
-
- /***************************************************
- *
- * Primitive Definitions
- *
- ***************************************************/
-
- objects: object
- | endobject
- | instance
- | lock
- | killobject
- | xrotate
- | yrotate
- | zrotate
- | scale
- | translate
- | reset
- | child
- ;
-
- object: P_OBJECT TYPE_IDENT
- ;
-
- endobject: P_ENDOBJECT
- ;
-
- instance: P_INSTANCE type_object
- | P_INSTANCE OPEN_BRACE instance_defs CLOSE_BRACE
- ;
-
- instance_defs: /* empty */
- | instance_defs instance_def
- ;
-
- instance_def: P_OBJECT type_object
- | P_SUBSURF type_surface type_surface
- | P_SUBTEXT type_texture type_texture
- | P_NAME TYPE_IDENT
- ;
-
- lock: P_LOCK type_object
- ;
-
- killobject: P_KILLOBJECT type_object
- ;
-
- xrotate: P_XROTATE type_object real_expr
- ;
-
- yrotate: P_YROTATE type_object real_expr
- ;
-
- zrotate: P_ZROTATE type_object real_expr
- ;
-
- scale: P_SCALE type_object type_point
- ;
-
- translate: P_TRANSLATE type_object type_point
- ;
-
- reset: P_RESET type_object
- ;
-
- child: P_CHILD type_object
- ;
-
-
- /****************************************************
- *
- * Surface (Pattern) Type Definitions
- *
- ****************************************************/
-
- surfaces: surface
- | check
- | brick
- | marble
- | wood
- | clouds
- | wrapsp
- | wrapcy
- | wrapfl
- | blotch
- ;
-
- blotch: P_BLOTCH TYPE_IDENT OPEN_BRACE blotch_defs CLOSE_BRACE
- ;
-
- blotch_defs: /* empty */
- | blotch_defs blotch_def
- ;
-
- blotch_def: P_SCALE type_posreal
- | P_PATTERN type_surface
- ;
-
- clouds: P_CLOUDS TYPE_IDENT OPEN_BRACE clouds_defs CLOSE_BRACE
- ;
-
- clouds_defs: /* empty */
- | clouds_defs clouds_def
- ;
-
- clouds_def: P_SKY type_surface
- | P_CLOUDS type_surface
- | P_SCALE type_posreal
- | P_POWER type_posreal
- | P_PERTURB type_nnegreal
- | P_XPHASE real_expr
- | P_YPHASE real_expr
- | P_ZPHASE real_expr
- ;
-
- wrapsp: P_WRAPSP TYPE_IDENT OPEN_BRACE wrapsp_defs CLOSE_BRACE
- ;
-
- wrapsp_defs: /* empty */
- | wrapsp_defs wrapsp_def
- ;
-
- wrapsp_def: P_BITMAP type_bitmap
- | P_PATTERN type_surface
- | P_SUB type_nnegint type_surface
- | P_DOTRANS
- | P_DOREFL
- | P_DODIFF
- | P_XREP type_posreal
- | P_YREP type_posreal
- | P_FILTER type_posint
- ;
-
- wrapfl: P_WRAPFL TYPE_IDENT OPEN_BRACE wrapfl_defs CLOSE_BRACE
- ;
-
- wrapfl_defs: /* empty */
- | wrapfl_defs wrapfl_def
- ;
-
- wrapfl_def: P_BITMAP type_bitmap
- | P_PATTERN type_surface
- | P_SUB type_nnegint type_surface
- | P_DOTRANS
- | P_DOREFL
- | P_DODIFF
- | P_FILTER type_posint
- | P_LOC type_point
- | P_XAXIS type_vector
- | P_YAXIS type_vector
- | P_XLEN type_posreal
- | P_YLEN type_posreal
- | P_REPEATX
- | P_REPEATY
- ;
-
-
- wrapcy: P_WRAPCY TYPE_IDENT OPEN_BRACE wrapcy_defs CLOSE_BRACE
- ;
-
- wrapcy_defs: /* empty */
- | wrapcy_defs wrapcy_def
- ;
-
- wrapcy_def: P_BITMAP type_bitmap
- | P_PATTERN type_surface
- | P_SUB type_nnegint type_surface
- | P_DOTRANS
- | P_DODIFF
- | P_DOREFL
- | P_XREP type_posreal
- | P_HEIGHT type_posreal
- | P_FILTER type_posint
- ;
-
- marble: P_MARBLE TYPE_IDENT OPEN_BRACE marble_defs CLOSE_BRACE
- ;
-
- marble_defs: /* empty */
- | marble_defs marble_def
- ;
-
- marble_def: P_PATTERN type_surface
- | P_GRAIN type_surface
- | P_SCALE type_posreal
- | P_POWER type_posreal
- ;
-
- wood: P_WOOD TYPE_IDENT OPEN_BRACE wood_defs CLOSE_BRACE
- ;
-
- wood_defs: /* empty */
- | wood_defs wood_def
- ;
-
- wood_def: P_PATTERN type_surface
- | P_GRAIN type_surface
- | P_SCALE type_posreal
- ;
-
- check: P_CHECK TYPE_IDENT OPEN_BRACE check_defs CLOSE_BRACE
- ;
-
- check_defs: /* empty */
- | check_defs check_def
- ;
-
- check_def: P_XSIZE type_posreal
- | P_YSIZE type_posreal
- | P_ZSIZE type_posreal
- | P_PATTERN1 type_surface
- | P_PATTERN2 type_surface
- ;
-
- brick: P_BRICK TYPE_IDENT OPEN_BRACE brick_defs CLOSE_BRACE
- ;
-
- brick_defs: /* empty */
- | brick_defs brick_def
- ;
-
- brick_def: P_XSIZE type_posreal
- | P_YSIZE type_posreal
- | P_ZSIZE type_posreal
- | P_BRICK type_surface
- | P_MORTAR type_surface
- | P_MSIZE type_posreal
- | P_YOFFSET type_nnegreal
- | P_ZOFFSET type_nnegreal
- ;
-
- surface: P_COLOR TYPE_IDENT OPEN_BRACE surface_defs CLOSE_BRACE
- ;
-
- surface_defs: /* nothing */
- | surface_defs surface_def
- ;
- surface_def: P_DIFFUSE type_color
- | P_AMBIENT type_color
- | P_REFLECT type_color
- | P_FILTER type_color
- | P_TRANSMIT type_color
- | P_INDEX type_posreal
- | P_PCOEF type_posreal
- | P_PREFL type_real01
- | P_AREFL type_nnegreal
- | P_ATRANS type_nnegreal
- ;
-
-
- /************************************************
- *
- * Texture Definitions
- *
- ************************************************/
-
- textures: waves
- | bumpcy
- | bumpsp
- | bumpfl
- ;
-
- waves: P_WAVES TYPE_IDENT OPEN_BRACE waves_defs CLOSE_BRACE
- ;
-
- waves_defs: /* empty */
- | waves_defs waves_def
- ;
-
- waves_def: P_NCENTERS type_posint
- | P_SCALE type_posreal
- | P_PHASE real_expr
- | P_SIZE real_expr
- ;
-
- bumpsp: P_BUMPSP TYPE_IDENT OPEN_BRACE bumpsp_defs CLOSE_BRACE
- ;
-
- bumpsp_defs: /* nothing */
- | bumpsp_defs bumpsp_def
- ;
-
- bumpsp_def: P_BITMAP type_bitmap
- | P_XREP type_posreal
- | P_YREP type_posreal
- | P_SIZE real_expr
- ;
-
- bumpcy: P_BUMPCY TYPE_IDENT OPEN_BRACE bumpcy_defs CLOSE_BRACE
- ;
-
- bumpcy_defs: /* empty */
- | bumpcy_defs bumpcy_def
- ;
-
- bumpcy_def: P_BITMAP type_bitmap
- | P_XREP type_posreal
- | P_HEIGHT type_posreal
- | P_SIZE real_expr
- ;
-
- bumpfl: P_BUMPFL TYPE_IDENT OPEN_BRACE bumpfl_defs CLOSE_BRACE
- ;
-
- bumpfl_defs: /* empty */
- | bumpfl_defs bumpfl_def
- ;
-
- bumpfl_def: P_BITMAP type_bitmap
- | P_LOC type_point
- | P_XAXIS type_vector
- | P_YAXIS type_vector
- | P_XLEN type_posreal
- | P_YLEN type_posreal
- | P_SIZE real_expr
- | P_REPEATX
- | P_REPEATY
- ;
-
- /************************************************
- *
- * Other Definitions
- *
- ************************************************/
-
- others: camera
- | sky
- | unsurf
- | dumpsurfaces
- | dumpobjects
- | dumplamps
- | fog
- | smoothon
- | smoothoff
- | maxaadepth
- | maxaadiff
- | maxoctdepth
- | maxobcube
- | octbuff
- | noshad
- | norefl
- | notrans
- | illuminate
- | iff
- | raw24lpo
- | note
- | csg
- | variable
- | newscope
- | endscope
- | varexpr
- | fastmemonly
- ;
-
- varexpr: exprvar_id P_EQSIGN real_expr
- ;
-
- exprvar_id: TYPE_IDENT
- ;
-
- newscope: P_NEWSCOPE
- ;
-
- endscope: P_ENDSCOPE
- ;
-
- variable: P_VREAL var_ident P_EQSIGN real_expr
- | P_VINT var_ident P_EQSIGN int_expr
- | P_VINT var_ident
- | P_VECTOR var_ident P_EQSIGN vec_expr
- ;
-
- var_ident: TYPE_IDENT
- ;
-
- csg: P_CSG type_instance csg_operand type_instance P_USESURF type_instance
- | P_CSG type_instance csg_operand type_instance P_PATTERN type_surface
- ;
-
- csg_operand: P_AND
- | P_ANDNOT
- ;
-
-
- note: P_NOTE TYPE_TEXT
-
- iff: P_IFF type_file TYPE_IDENT
- ;
-
- raw24lpo: P_RAW24LPO type_file TYPE_IDENT
- ;
-
- camera: P_OBSERVER OPEN_BRACE camera_defs CLOSE_BRACE
- ;
-
- camera_defs: /* nothing */
- | camera_defs camera_def
- ;
-
- camera_def: P_LOC type_point
- | P_TARGET type_point
- | P_UP type_vector
- | P_RES type_posint type_posint
- | P_ASPECT type_posreal
- | P_HFOV type_posreal
- | P_VFOV type_posreal
- ;
-
-
- sky: P_SKY OPEN_BRACE sky_defs CLOSE_BRACE
- ;
-
- sky_defs: /* nothing */
- | sky_defs sky_def
- ;
-
- sky_def: P_HORIZON type_color
- | P_ZENITH type_color
- | P_NUMSTARS type_nnegint
- | P_STARCOLOR type_color
- | P_UP type_vector
- ;
-
- unsurf: P_UNSURF type_surface
- ;
-
- dumpsurfaces: P_DUMPSURFACES
- ;
-
- dumpobjects: P_DUMPOBJECTS
- ;
-
- dumplamps: P_DUMPLAMPS
- ;
-
- fog: P_FOG OPEN_BRACE fog_defs CLOSE_BRACE
- ;
-
- fog_defs: /* nothing */
- | fog_defs fog_def
- ;
-
- fog_def: P_COLOR type_color
- | P_THIN type_posreal
- | P_DIST type_posreal
- | P_POWER type_posreal
- ;
-
-
- noshad: P_NOSHAD
- ;
-
- notrans: P_NOTRANS
- ;
-
- norefl: P_NOREFL
- ;
-
- illuminate: P_ILLUMINATE
- ;
-
- smoothon: P_SMOOTHON
- ;
-
- smoothoff: P_SMOOTHOFF
- ;
-
- maxobcube: P_MAXOBCUBE type_nnegint
- ;
-
- maxoctdepth: P_MAXOCTDEPTH type_nnegint
- ;
-
- octbuff: P_OCTBUFF type_posreal
- ;
-
- maxaadepth: P_MAXAADEPTH type_nnegint
- ;
-
- maxaadiff: P_MAXAADIFF type_color
- ;
-
- fastmemonly: P_FASTMEMONLY
-
- /* allow some grammatical checking of types */
-
- type_posreal: real_expr
- ;
-
- type_nnegreal: real_expr
- ;
-
- type_posint: int_expr
- ;
-
- type_nnegint: int_expr
- ;
-
- type_real01: real_expr
- ;
-
- real_expr: real_term
- | real_expr P_PLUS real_expr
- | real_expr P_MINUS real_expr
- | real_expr P_MULT real_expr
- | real_expr P_DIVIDE real_expr
- | P_MINUS real_expr %prec UMINUS
- | OPEN_PAREN real_expr CLOSE_PAREN
- | P_ACOS OPEN_PAREN real_expr CLOSE_PAREN
- | P_ASIN OPEN_PAREN real_expr CLOSE_PAREN
- | P_ATAN OPEN_PAREN real_expr CLOSE_PAREN
- | P_ATAN2 OPEN_PAREN real_expr P_COMMA real_expr CLOSE_PAREN
- | P_COS OPEN_PAREN real_expr CLOSE_PAREN
- | P_SIN OPEN_PAREN real_expr CLOSE_PAREN
- | P_TAN OPEN_PAREN real_expr CLOSE_PAREN
- | P_COSH OPEN_PAREN real_expr CLOSE_PAREN
- | P_SINH OPEN_PAREN real_expr CLOSE_PAREN
- | P_TANH OPEN_PAREN real_expr CLOSE_PAREN
- | P_EXP OPEN_PAREN real_expr CLOSE_PAREN
- | P_LOG OPEN_PAREN real_expr CLOSE_PAREN
- | P_LOG10 OPEN_PAREN real_expr CLOSE_PAREN
- | P_POWER OPEN_PAREN real_expr P_COMMA real_expr CLOSE_PAREN
- | P_SQRT OPEN_PAREN real_expr CLOSE_PAREN
- | P_CEIL OPEN_PAREN real_expr CLOSE_PAREN
- | P_FLOOR OPEN_PAREN real_expr CLOSE_PAREN
- | P_DEG2RAD OPEN_PAREN real_expr CLOSE_PAREN
- | P_RAD2DEG OPEN_PAREN real_expr CLOSE_PAREN
- ;
-
- int_expr: int_term
- | int_expr P_PLUS int_expr
- | int_expr P_MINUS int_expr
- | int_expr P_MULT int_expr
- | int_expr P_DIVIDE int_expr
- ;
-
- real_term: array_id
- | array_id OPEN_BRACK type_nnegint CLOSE_BRACK
- | real_int
- ;
-
-
- array_id: TYPE_IDENT
- ;
-
- real_int: TYPE_REAL
- | TYPE_INTEGER
- ;
-
-
- int_term: TYPE_IDENT
- | TYPE_INTEGER
- ;
-
-
- type_color: vec_expr
- ;
-
- type_point: vec_expr
-
- type_vector: vec_expr
- ;
-
- vec_expr: vec_term
- ;
-
- vec_term: path_id
- | path_id OPEN_BRACK type_nnegint CLOSE_BRACK
- | OPEN_VEC real_expr P_COMMA real_expr P_COMMA real_expr CLOSE_VEC
- ;
-
- path_id: TYPE_IDENT
- ;
-
- type_vector2: OPEN_VEC real_expr P_COMMA real_expr CLOSE_VEC
- ;
-
- type_surface: TYPE_IDENT
- ;
-
- type_bitmap: TYPE_IDENT
- ;
-
- type_vertex: TYPE_IDENT
- ;
-
- type_texture: TYPE_IDENT
- ;
-
- type_object: TYPE_IDENT
- ;
-
- type_slice: TYPE_IDENT
- ;
-
- type_file: TYPE_IDENT
- | TYPE_FILENAME
- ;
-
- type_instance: TYPE_IDENT
- ;
-
- %%
-